#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 18 21:55:59 2022

@author: liqingsimac
"""
'''
###############################################
##随机游动，样本路径的模拟
import numpy as np
import matplotlib.pyplot as plt

N=10 #走5步
p=0.55 #每步向上移动的概率
q=0.45 #每步向下移动的概率
Y=np.random.rand(N) #独立同分布的随机数(0,1)区间内均匀分布
X=np.zeros(N)
for k in range(N):
    if Y[k]>=p:
        X[k]=1
    else:
        X[k]=-1

M=np.zeros(N+1)
M[1:N+1]=np.cumsum(X) #部分和

t=np.array(range(N+1))

fig=plt.figure()
ax=fig.add_subplot(111)

ax.hlines(y=0,xmin=0,xmax=N+1)
ax.vlines(x=0,ymin=-N-1,ymax=N+1)

ax.plot(t,M,'b-o')
ax.set_xlabel('n = step')
ax.set_ylabel('M_n')

fig.savefig('random-walk-path.png')
'''

'''
##############################################
## 中心极限定理，求正态分布和二项分布的概率
import numpy as np
import scipy.stats as ss

x=(30-20)/np.sqrt(96)
print(ss.norm.cdf(x))

x=(50-40)/np.sqrt(84)
print(ss.norm.cdf(x))
'''


##############################################
## 布朗运动的样本路径
import numpy as np
import matplotlib.pyplot as plt

N=50
Y=np.random.randn(N) #产生独立同分布的随机数
R=np.zeros(N+1)
R[1:N+1]=np.cumsum(Y) #得到部分和序列
S=R/np.sqrt(N) 
t=np.linspace(0,1,N+1)

fig=plt.figure()
ax=fig.add_subplot(111)

ax.hlines(y=0,xmin=-0.2,xmax=1.2)
ax.vlines(x=0,ymin=-2,ymax=2)

ax.plot(t,S,'b-')  #折线就是线性插值

ax.set_xlabel('t = time')
ax.set_ylabel('S(t)')
#fig.savefig('bm-sample-path.png')




